from tortoise.models import Model
from tortoise import fields


# 文件模型
class File(Model):
    id = fields.IntField(pk=True)
    filename = fields.CharField(max_length=255)  # 原始文件名
    stored_filename = fields.CharField(max_length=36, unique=True)  # UUID存储文件名
    file_path = fields.CharField(max_length=512)  # 文件在服务器中的位置
    is_deleted = fields.BooleanField(default=False)  # 是否已删除标记
    download_count = fields.IntField(default=0)  # 下载次数
    upload_time = fields.DatetimeField(auto_now_add=True)  # 上传时间
    file_size = fields.BigIntField()  # 文件大小（字节数）

    class Meta:
        table = "files"

    def __str__(self):
        return f"File({self.filename}, {self.file_size} bytes)"

    class PydanticMeta:
        exclude = ("file_path", "is_deleted")